package org.baitu.zzim.model;

import lombok.Data;

import java.io.Serializable;

/**
 * @author zhangkai_a
 * @date 2025/7/2 09:46
 */
@Data
public class ChatMessage implements Serializable {

    private static final long serialVersionUID = 8106333313818679525L;
    private String messageId;
    private String sender;
    private String receiver;
    private long timestamp;

    private MessageType type;
    private String content;
    private String mediaUrl;
    private long mediaDuration;
    private long fileSize;

    private String extraJson;     // JSON 字符串，支持动态扩展键值对

    public enum MessageType {
        TEXT,       // 文本消息
        IMAGE,      // 图片消息
        EMOJI,      // 表情消息
        AUDIO,      // 音频消息
        VIDEO,      // 视频消息
        FILE,       // 文件消息
        CALL_SIGNAL,// 呼叫信号消息
        CUSTOM // 用户自定义类型
    }

    public enum CallSignalType {
        DIALING,     // 发起呼叫
        RINGING,     // 被呼叫端响铃（可选）
        ACCEPT,      // 接听
        REJECT,      // 拒接
        HANGUP,      // 挂断
        TIMEOUT,     // 呼叫超时未接
        CANCEL       // 主动取消呼叫（在接通前）
    }
}